Function CreateTrail . Trail( BindedMesh , BindedMesh2 , col . ColorValue )
	
	tra . Trail = New Trail
	
	tra \ col = col
	tra \ BindedMesh = BindedMesh
	tra \ BindedMesh2 = BindedMesh2	
		
	Return tra
	
End Function

Function SetupTrail( tra . Trail , Length )
		
	CleanTrail( tra )
	
	tra \ Mesh = CreateMesh()
	tra \ Surface = CreateSurface( tra \ Mesh )
	
	tra \ Length = Length
	
	For i = 0 To tra \ Length
		
		tra \ vertex[i] = AddVertex( tra \ Surface , EntityX( tra \ BindedMesh , 1 ) , EntityY( tra \ BindedMesh , 1 ) , EntityZ( tra \ BindedMesh , 1 ) )
		
	Next
	
	For i = 0 To tra \ Length - 2
		
		AddTriangle( tra \ Surface , tra \ vertex[i] , tra \ vertex[i+1] , tra \ vertex[i+2] )
		
	Next
	
	EntityFX tra \ Mesh , 16 + 32 + 1 + 2	
	
	tra \ Visible = True
		
End Function

Function CleanTrail( tra . Trail )
		
	If tra \ Mesh > 0 Then FreeEntity tra \ Mesh
	tra \ Mesh = 0
	
End Function

Function UpdateTrails()
	For tra . Trail = Each Trail		
		UpdateTrail( tra )		
	Next	
End Function

Function UpdateTrail( tra . Trail )

	If tra \ Mesh = 0 Then Return	
	
	For i = tra \ Length To 1 Step - 1
		
		VertexCoords tra \ Surface , tra \ vertex[i] , VertexX( tra \ Surface , tra \ vertex[i - 1] ) , VertexY( tra \ Surface , tra \ vertex[i - 1] ) , VertexZ( tra \ Surface , tra \ vertex[i - 1] )
		;VertexColor tra \ Surface , tra \ vertex[i] , VertexRed( tra \ Surface , tra \ vertex[i - 1] ) , VertexGreen( tra \ Surface , tra \ vertex[i - 1] ) , VertexBlue( tra \ Surface , tra \ vertex[i - 1] ) , VertexAlpha( tra \ Surface , tra \ vertex[i - 1] )
		
		If i Mod 2 = tra \ stepper Then		
			VertexColor tra \ Surface , tra \ vertex[i] , tra \ col \ Red , tra \ col \ Green , tra \ col \ Blue , 0
		Else
			VertexColor tra \ Surface , tra \ vertex[i] , tra \ col \ Red , tra \ col \ Green , tra \ col \ Blue , tra \ col \ Alpha - ( Float(i) / Float(tra \ Length) * tra \ col \ Alpha )		
		End If
		
	Next
	
	If tra \ Visible = False Then 
		
		If tra \ stepper = 0
			tra \ stepper = 1
		Else
			tra \ stepper = 0
		EndIf
		Return
		
	EndIf
	
	If tra \ stepper = 0
		
		VertexColor tra \ Surface , tra \ vertex[0] , tra \ col \ Red , tra \ col \ Green , tra \ col \ Blue , tra \ col \ Alpha - ( Float(i) / Float(tra \ Length) * tra \ col \ Alpha )
		VertexCoords tra \ Surface , tra \ vertex[0] , EntityX( tra \ BindedMesh , 1 )  , EntityY( tra \ BindedMesh , 1 )  , EntityZ( tra \ BindedMesh , 1 )
		tra \ stepper = 1
		
	Else
		
		VertexColor tra \ Surface , tra \ vertex[0] , tra \ col \ Red , tra \ col \ Green , tra \ col \ Blue , 0
		VertexCoords tra \ Surface , tra \ vertex[0] , EntityX( tra \ BindedMesh2 , 1 )  , EntityY( tra \ BindedMesh2 , 1 )  , EntityZ( tra \ BindedMesh2 , 1 )
		tra \ stepper = 0
		
	EndIf
	
End Function